﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using zeus.Core;
using zeus.Core.RepositoryInterfaces;
using SharpArch.Data.NHibernate;
using NHibernate;
using NHibernate.Transform;
using NHibernate.Criterion;

namespace zeus.Data
{
    public class UbicacionRepository : Repository<Ubicacion>, IUbicacionRepository
    {
        public Ubicacion GetPosicionPorId(String id)
        {

            if (id == "\n                \n            ")
            {
                id = "431990";
                return Session.CreateQuery("from Ubicacion u where u.Id = " + id + " order by u.Fecha desc")
                    .SetFirstResult(0)
                    .SetMaxResults(1)
                    .UniqueResult<Ubicacion>();

            }
            else
            {

                return Session.CreateQuery("from Ubicacion u where u.Id = " + id + " order by u.Fecha desc")
                    .SetFirstResult(0)
                    .SetMaxResults(1)
                    .UniqueResult<Ubicacion>();
                // .List<Ubicacion>();
            }
        }
       // public IList<Ubicacion> GetUltimaPosicion(int id)
        public IList<Ubicacion> GetUltimaPosicion(int id)
        {
            return Session.CreateQuery("from Ubicacion u where u.CodigoUnidad = " + id.ToString() +" order by u.Fecha desc")
                .SetFirstResult(0)
                .SetMaxResults(3)
                //.UniqueResult<Ubicacion>();
                .List<Ubicacion>();
        }

        public IList<Ubicacion> GetReportesAvanzada(int id, string fecha_desde, string fecha_hasta)
        {
            return Session.CreateQuery("from Ubicacion u where u.CodigoUnidad = " + id.ToString() + " and u.FechaServer >= " + fecha_desde + " and u.FechaServer <= " + fecha_hasta + "u.order by u.FechaServer desc")
                .SetFirstResult(0)
                .SetMaxResults(150)
                .List<Ubicacion>();

        }

        public IList<Ubicacion> GetUbicaciones(int codigoUnidad)
        {
            return Session.CreateCriteria<Ubicacion>()
                .Add(Restrictions.Eq("CodigoUnidad", codigoUnidad))
                .SetMaxResults(50)
                .AddOrder(Order.Desc("Fecha"))
                .List<Ubicacion>();

        }

        public IList<Ubicacion> GetUbicacionesPorGrupo(int codigoGrupo)
        {
            return Session.CreateQuery("from Ubicacion u where u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo = " + codigoGrupo.ToString() + ") order by u.Fecha desc")
               .SetFirstResult(0)
               .SetMaxResults(50)
               .List<Ubicacion>();
        }

        public IList<Ubicacion> GetUbicacionesPorCliente(int codigoCliente)
        {
            return Session.CreateQuery("from Ubicacion u where u.CodigoUnidad in(select g.Id from Unidad g where g.CodigoCliente in(select c.Id from Cliente c where c.Id ="+codigoCliente.ToString() +"  )) order by u.Fecha desc")
               .SetFirstResult(0)
               .SetMaxResults(50)
               .List<Ubicacion>();
        }

        public IList<Ubicacion> GetUbicacionesPorUsuario(int codigoUsuario)
        {
            return Session.CreateQuery("from Ubicacion u where u.CodigoUnidad in(select c.Unidad from UsuarioUnidad c where c.Usuario =" + codigoUsuario.ToString() + "  ) order by u.Fecha desc")
               .SetFirstResult(0)
               .SetMaxResults(50)
               .List<Ubicacion>();
        }

        public IList<Ubicacion> GetUbicacionesPorGrupoCliente(int codigoCliente)
        {
            return Session.CreateQuery("from Ubicacion u where u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo in(select r.Id from Grupo r where r.CodigoCliente =" + codigoCliente.ToString() + "  )) order by u.Fecha desc")
               .SetFirstResult(0)
               .SetMaxResults(50)
               .List<Ubicacion>();
        }


        public IList<Ubicacion> GetUbicacionesPorGrupoUsuario(int codigoUsuario)
        {
            return Session.CreateQuery("from Ubicacion u where u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo in(select w.Grupo from GrupoUsuario w where w.Usuario =" + codigoUsuario.ToString() + ")) order by u.Fecha desc")
               .SetFirstResult(0)
               .SetMaxResults(50)
               .List<Ubicacion>();
        }

        public IList<Ubicacion> GetUbicacionesPorEvento(int codigoEvento)
        {
            return Session.CreateQuery("from Ubicacion u where u.CodigoEvento =" + codigoEvento.ToString() + ")) order by u.Fecha desc")
               .SetFirstResult(0)
               .SetMaxResults(50)
               .List<Ubicacion>();
        }

        public IList<Ubicacion> GetUbicacionesPorEventoPorUnidad(int codigoEvento,int codigoUnidad)
        {
            return Session.CreateQuery("from Ubicacion u where u.CodigoEvento =" + codigoEvento.ToString() +" and u.CodigoUnidad = "+codigoUnidad.ToString()+ " order by u.Fecha desc")
               .SetFirstResult(0)
               .SetMaxResults(50)
               .List<Ubicacion>();
        }

        public IList<Ubicacion> GetUbicacionesPorEventoPorGrupo(int codigoEvento, int codigoGrupo)
        {
            return Session.CreateQuery("from Ubicacion u where u.CodigoEvento =" + codigoEvento.ToString() + " and u.CodigoUnidad in (select g.Unidad from GrupoUnidad g where g.Grupo = " + codigoGrupo.ToString() + ") order by u.Fecha desc")
               .SetFirstResult(0)
               .SetMaxResults(50)
               .List<Ubicacion>();
        }

        public IList<Ubicacion> GetUbicacionesPorEventoPorCliente(int codigoEvento, int codigoCliente)
        {
            return Session.CreateQuery("from Ubicacion u where u.CodigoEvento =" + codigoEvento.ToString() + " and u.CodigoUnidad in (select g.Unidad from UsuarioUnidad g where g.Usuario in (select s.Id from Usuario s where s.CodigoCliente = " + codigoCliente.ToString() + ")) order by u.Fecha desc")
               .SetFirstResult(0)
               .SetMaxResults(50)
               .List<Ubicacion>();
        }

        public IList<Ubicacion> GetUbicacionesPorGrupoClienteEvento(int codigoCliente,int codigoEvento)
        {
            return Session.CreateQuery("from Ubicacion u where u.CodigoEvento = "+codigoEvento.ToString() +" and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo in(select r.Id from Grupo r where r.CodigoCliente =" + codigoCliente.ToString() + "  )) order by u.Fecha desc")
               .SetFirstResult(0)
               .SetMaxResults(50)
               .List<Ubicacion>();
        }

        public IList<Ubicacion> GetUbicacionesPorUsuarioEvento(int codigoUsuario, int codigoEvento)
        {
            return Session.CreateQuery("from Ubicacion u where u.CodigoEvento = " + codigoEvento.ToString() + " and u.CodigoUnidad in(select g.Unidad from UsuarioUnidad g where g.Usuario =" + codigoUsuario.ToString() + "  ) order by u.Fecha desc")
               .SetFirstResult(0)
               .SetMaxResults(50)
               .List<Ubicacion>();
        }

        public IList<Ubicacion> GetUbicacionesPorGrupoUsuarioEvento(int codigoUsuario, int codigoEvento)
        {
            return Session.CreateQuery("from Ubicacion u where u.CodigoEvento = " + codigoEvento.ToString() + " and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo in (select w.Grupo from GrupoUsuario w where w.Usuario = " + codigoUsuario.ToString() + "  )) order by u.Fecha desc")
               .SetFirstResult(0)
               .SetMaxResults(50)
               .List<Ubicacion>();
        }

        public IList<Ubicacion> GetUbicacionesPorUnidadGpsValid(int codigoUnidad, int codigoGps)
        {
            if (codigoGps == 1)
            {
                return Session.CreateQuery("from Ubicacion u where u.CodigoUnidad = " + codigoUnidad.ToString() + " and u.GpsValido='Valido'  order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();
            }
            else if (codigoGps == 2)
            {

                return Session.CreateQuery("from Ubicacion u where u.CodigoUnidad = " + codigoUnidad.ToString() + " and u.GpsValido='Invalido'  order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();
            
            }

            else if (codigoGps == 3)
            {

                return Session.CreateQuery("from Ubicacion u where u.CodigoUnidad = " + codigoUnidad.ToString() + " and u.GpsConectado='Conectado'  order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();

            }
            else if (codigoGps == 4)
            {

                return Session.CreateQuery("from Ubicacion u where u.CodigoUnidad = " + codigoUnidad.ToString() + " and u.GpsConectado='Desconectado'  order by u.Fecha desc")
              .SetFirstResult(0)
              .SetMaxResults(50)
              .List<Ubicacion>();
            
            
            }
            else if (codigoGps == 5)
            {

                return Session.CreateQuery("from Ubicacion u where u.CodigoUnidad = " + codigoUnidad.ToString() + " and u.GpsValido='Valido' and u.GpsConectado='Conectado'  order by u.Fecha desc")
              .SetFirstResult(0)
              .SetMaxResults(50)
              .List<Ubicacion>();


            }
            else if (codigoGps == 6)
            {

                return Session.CreateQuery("from Ubicacion u where u.CodigoUnidad = " + codigoUnidad.ToString() + " and u.GpsValido='Valido' and u.GpsConectado='Desconectado'  order by u.Fecha desc")
              .SetFirstResult(0)
              .SetMaxResults(50)
              .List<Ubicacion>();


            }

            else if (codigoGps == 7)
            {

                return Session.CreateQuery("from Ubicacion u where u.CodigoUnidad = " + codigoUnidad.ToString() + " and u.GpsValido='Invalido' and u.GpsConectado='Conectado'  order by u.Fecha desc")
              .SetFirstResult(0)
              .SetMaxResults(50)
              .List<Ubicacion>();


            }
            else
            {

                return Session.CreateQuery("from Ubicacion u where u.CodigoUnidad = " + codigoUnidad.ToString() + " and u.GpsValido='Invalido' and u.GpsConectado='Desconectado'  order by u.Fecha desc")
              .SetFirstResult(0)
              .SetMaxResults(50)
              .List<Ubicacion>();


            }


        }


        public IList<Ubicacion> GetUbicacionesPorUnidadBateriaPrinciapl(int codigoUnidad, int codigobatPri)
        {
            if (codigobatPri == 1)
            {
                return Session.CreateQuery("from Ubicacion u where u.CodigoUnidad = " + codigoUnidad.ToString() + " and u.BateriaPrincipal >= 12  order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();
            }
            else if (codigobatPri == 2)
            {

                return Session.CreateQuery("from Ubicacion u where u.CodigoUnidad = " + codigoUnidad.ToString() + " and u.BateriaPrincipal <= 10 and u.BateriaPrincipal >= 1    order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();

            }

           else
            {

                return Session.CreateQuery("from Ubicacion u where u.CodigoUnidad = " + codigoUnidad.ToString() + " and u.BateriaPrincipal < 1  order by u.Fecha desc")
              .SetFirstResult(0)
              .SetMaxResults(50)
              .List<Ubicacion>();


            }


        }



        public IList<Ubicacion> GetUbicacionesPorUnidadBateriaAlterna(int codigoUnidad, int codigobatAlt)
        {
            if (codigobatAlt == 1)
            {
                return Session.CreateQuery("from Ubicacion u where u.CodigoUnidad = " + codigoUnidad.ToString() + " and u.BateriaAlterna < 5  order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();
            }
            else if (codigobatAlt == 2)
            {

                return Session.CreateQuery("from Ubicacion u where u.CodigoUnidad = " + codigoUnidad.ToString() + " and u.BateriaAlterna < 10 and u.BateriaAlterna >= 5    order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();

            }


            else if (codigobatAlt == 3)
            {

                return Session.CreateQuery("from Ubicacion u where u.CodigoUnidad = " + codigoUnidad.ToString() + " and u.BateriaAlterna < 25 and u.BateriaAlterna >= 10    order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();

            }

            else if (codigobatAlt == 4)
            {

                return Session.CreateQuery("from Ubicacion u where u.CodigoUnidad = " + codigoUnidad.ToString() + " and u.BateriaAlterna < 50 and u.BateriaAlterna >= 25    order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();

            }

            else if (codigobatAlt == 5)
            {

                return Session.CreateQuery("from Ubicacion u where u.CodigoUnidad = " + codigoUnidad.ToString() + " and u.BateriaAlterna < 75 and u.BateriaAlterna >= 50    order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();

            }

            else if (codigobatAlt == 6)
            {

                return Session.CreateQuery("from Ubicacion u where u.CodigoUnidad = " + codigoUnidad.ToString() + " and u.BateriaAlterna < 95 and u.BateriaAlterna >= 75    order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();

            }
            else
            {

                return Session.CreateQuery("from Ubicacion u where u.CodigoUnidad = " + codigoUnidad.ToString() + " and u.BateriaAlterna >= 95  order by u.Fecha desc")
              .SetFirstResult(0)
              .SetMaxResults(50)
              .List<Ubicacion>();


            }


        }



        public IList<Ubicacion> GetUbicacionesPorUnidadEstadoLogico(int codigoUnidad, int codigoEstadoLogico)
        {
            if (codigoEstadoLogico == 1)
            {
                return Session.CreateQuery("from Ubicacion u where u.CodigoUnidad = " + codigoUnidad.ToString() + " and u.EstadoLogico='Idle'  order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();
            }
            else if (codigoEstadoLogico == 2)
            {

                return Session.CreateQuery("from Ubicacion u where u.CodigoUnidad = " + codigoUnidad.ToString() + " and u.EstadoLogico='Armed'    order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();

            }


            else if (codigoEstadoLogico == 3)
            {

                return Session.CreateQuery("from Ubicacion u where u.CodigoUnidad = " + codigoUnidad.ToString() + " and u.EstadoLogico='Silent Delay'    order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();

            }

            else if (codigoEstadoLogico == 4)
            {

                return Session.CreateQuery("from Ubicacion u where u.CodigoUnidad = " + codigoUnidad.ToString() + " and u.EstadoLogico='Alarm Triggered'    order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();

            }

           
           else
            {

                return Session.CreateQuery("from Ubicacion u where u.CodigoUnidad = " + codigoUnidad.ToString() + " and u.EstadoLogico='Garage Mode'  order by u.Fecha desc")
              .SetFirstResult(0)
              .SetMaxResults(50)
              .List<Ubicacion>();


            }


        }



        //////////////////////

        public IList<Ubicacion> GetUbicacionesPorGrupoGpsValid(int codigoGrupo, int codigoGps)
        {
            if (codigoGps == 1)
            {
                return Session.CreateQuery("from Ubicacion u where  u.GpsValido='Valido' and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo = " + codigoGrupo.ToString() + ")  order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();
            }
            else if (codigoGps == 2)
            {

                return Session.CreateQuery("from Ubicacion u where u.GpsValido='Invalido'  and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo = " + codigoGrupo.ToString() + ")  order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();

            }

            else if (codigoGps == 3)
            {

                return Session.CreateQuery("from Ubicacion u where u.GpsConectado='Conectado' and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo = " + codigoGrupo.ToString() + ")  order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();

            }
            else if (codigoGps == 4)
            {

                return Session.CreateQuery("from Ubicacion u where u.GpsConectado='Desconectado' and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo = " + codigoGrupo.ToString() + ")  order by u.Fecha desc")
              .SetFirstResult(0)
              .SetMaxResults(50)
              .List<Ubicacion>();


            }
            else if (codigoGps == 5)
            {

                return Session.CreateQuery("from Ubicacion u where u.GpsValido='Valido' and u.GpsConectado='Conectado'  and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo = " + codigoGrupo.ToString() + ")  order by u.Fecha desc")
              .SetFirstResult(0)
              .SetMaxResults(50)
              .List<Ubicacion>();


            }
            else if (codigoGps == 6)
            {

                return Session.CreateQuery("from Ubicacion u where u.GpsValido='Valido' and u.GpsConectado='Desconectado'  and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo = " + codigoGrupo.ToString() + ")  order by u.Fecha desc")
              .SetFirstResult(0)
              .SetMaxResults(50)
              .List<Ubicacion>();


            }

            else if (codigoGps == 7)
            {

                return Session.CreateQuery("from Ubicacion u where u.GpsValido='Invalido' and u.GpsConectado='Conectado'  and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo = " + codigoGrupo.ToString() + ")  order by u.Fecha desc")
              .SetFirstResult(0)
              .SetMaxResults(50)
              .List<Ubicacion>();


            }
            else
            {

                return Session.CreateQuery("from Ubicacion u where u.GpsValido='Invalido' and u.GpsConectado='Desconectado'  and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo = " + codigoGrupo.ToString() + ")  order by u.Fecha desc")
              .SetFirstResult(0)
              .SetMaxResults(50)
              .List<Ubicacion>();


            }


        }

        //////////////////////////////

        public IList<Ubicacion> GetUbicacionesPorGrupoBateriaPrinciapl(int codigoGrupo, int codigobatPri)
        {
            if (codigobatPri == 1)
            {
                return Session.CreateQuery("from Ubicacion u where u.BateriaPrincipal >= 12  and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo = " + codigoGrupo.ToString() + ")  order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();
            }
            else if (codigobatPri == 2)
            {

                return Session.CreateQuery("from Ubicacion u where u.BateriaPrincipal <= 10 and u.BateriaPrincipal >= 1    and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo = " + codigoGrupo.ToString() + ")  order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();

            }

            else
            {

                return Session.CreateQuery("from Ubicacion u where u.BateriaPrincipal < 1  and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo = " + codigoGrupo.ToString() + ")  order by u.Fecha desc")
              .SetFirstResult(0)
              .SetMaxResults(50)
              .List<Ubicacion>();


            }


        }

        public IList<Ubicacion> GetUbicacionesPorGrupoBateriaAlterna(int codigoGrupo, int codigobatAlt)
        {
            if (codigobatAlt == 1)
            {
                return Session.CreateQuery("from Ubicacion u where u.BateriaAlterna < 5  and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo = " + codigoGrupo.ToString() + ")  order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();
            }
            else if (codigobatAlt == 2)
            {

                return Session.CreateQuery("from Ubicacion u where u.BateriaAlterna < 10 and u.BateriaAlterna >= 5   and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo = " + codigoGrupo.ToString() + ")  order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();

            }


            else if (codigobatAlt == 3)
            {

                return Session.CreateQuery("from Ubicacion u where u.BateriaAlterna < 25 and u.BateriaAlterna >= 10  and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo = " + codigoGrupo.ToString() + ")  order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();

            }

            else if (codigobatAlt == 4)
            {

                return Session.CreateQuery("from Ubicacion u where u.BateriaAlterna < 50 and u.BateriaAlterna >= 25   and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo = " + codigoGrupo.ToString() + ")  order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();

            }

            else if (codigobatAlt == 5)
            {

                return Session.CreateQuery("from Ubicacion u where u.BateriaAlterna < 75 and u.BateriaAlterna >= 50  and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo = " + codigoGrupo.ToString() + ")  order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();

            }

            else if (codigobatAlt == 6)
            {

                return Session.CreateQuery("from Ubicacion u where u.BateriaAlterna < 95 and u.BateriaAlterna >= 75  and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo = " + codigoGrupo.ToString() + ")  order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();

            }
            else
            {

                return Session.CreateQuery("from Ubicacion u where u.BateriaAlterna >= 95  and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo = " + codigoGrupo.ToString() + ")  order by u.Fecha desc")
              .SetFirstResult(0)
              .SetMaxResults(50)
              .List<Ubicacion>();


            }


        }


        public IList<Ubicacion> GetUbicacionesPorGrupoEstadoLogico(int codigoGrupo, int codigoEstadoLogico)
        {
            if (codigoEstadoLogico == 1)
            {
                return Session.CreateQuery("from Ubicacion u where u.EstadoLogico='Idle'  and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo = " + codigoGrupo.ToString() + ")  order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();
            }
            else if (codigoEstadoLogico == 2)
            {

                return Session.CreateQuery("from Ubicacion u where u.EstadoLogico='Armed'  and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo = " + codigoGrupo.ToString() + ")  order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();

            }


            else if (codigoEstadoLogico == 3)
            {

                return Session.CreateQuery("from Ubicacion u where u.EstadoLogico='Silent Delay'  and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo = " + codigoGrupo.ToString() + ")  order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();

            }

            else if (codigoEstadoLogico == 4)
            {

                return Session.CreateQuery("from Ubicacion u where u.EstadoLogico='Alarm Triggered' and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo = " + codigoGrupo.ToString() + ")  order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();

            }


            else
            {

                return Session.CreateQuery("from Ubicacion u where u.EstadoLogico='Garage Mode' and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo = " + codigoGrupo.ToString() + ")  order by u.Fecha desc")
              .SetFirstResult(0)
              .SetMaxResults(50)
              .List<Ubicacion>();


            }


        }

        public IList<Ubicacion> GetUbicacionesPorGpsPorCliente(int codigoGps, int codigoCliente)
        {
            if (codigoGps == 1)
            {
                return Session.CreateQuery("from Ubicacion u where  u.GpsValido='Valido' and u.CodigoUnidad in (select g.Unidad from UsuarioUnidad g where g.Usuario in (select s.Id from Usuario s where s.CodigoCliente = " + codigoCliente.ToString() + ")) order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();
            }
            else if (codigoGps == 2)
            {

                return Session.CreateQuery("from Ubicacion u where u.GpsValido='Invalido'  and u.CodigoUnidad in (select g.Unidad from UsuarioUnidad g where g.Usuario in (select s.Id from Usuario s where s.CodigoCliente = " + codigoCliente.ToString() + ")) order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();

            }

            else if (codigoGps == 3)
            {

                return Session.CreateQuery("from Ubicacion u where u.GpsConectado='Conectado' and u.CodigoUnidad in (select g.Unidad from UsuarioUnidad g where g.Usuario in (select s.Id from Usuario s where s.CodigoCliente = " + codigoCliente.ToString() + ")) order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();

            }
            else if (codigoGps == 4)
            {

                return Session.CreateQuery("from Ubicacion u where u.GpsConectado='Desconectado' and u.CodigoUnidad in (select g.Unidad from UsuarioUnidad g where g.Usuario in (select s.Id from Usuario s where s.CodigoCliente = " + codigoCliente.ToString() + ")) order by u.Fecha desc")
              .SetFirstResult(0)
              .SetMaxResults(50)
              .List<Ubicacion>();


            }
            else if (codigoGps == 5)
            {

                return Session.CreateQuery("from Ubicacion u where u.GpsValido='Valido' and u.GpsConectado='Conectado'  and u.CodigoUnidad in (select g.Unidad from UsuarioUnidad g where g.Usuario in (select s.Id from Usuario s where s.CodigoCliente = " + codigoCliente.ToString() + ")) order by u.Fecha desc")
              .SetFirstResult(0)
              .SetMaxResults(50)
              .List<Ubicacion>();


            }
            else if (codigoGps == 6)
            {

                return Session.CreateQuery("from Ubicacion u where u.GpsValido='Valido' and u.GpsConectado='Desconectado'  and u.CodigoUnidad in (select g.Unidad from UsuarioUnidad g where g.Usuario in (select s.Id from Usuario s where s.CodigoCliente = " + codigoCliente.ToString() + ")) order by u.Fecha desc")
              .SetFirstResult(0)
              .SetMaxResults(50)
              .List<Ubicacion>();


            }

            else if (codigoGps == 7)
            {

                return Session.CreateQuery("from Ubicacion u where u.GpsValido='Invalido' and u.GpsConectado='Conectado'  and u.CodigoUnidad in (select g.Unidad from UsuarioUnidad g where g.Usuario in (select s.Id from Usuario s where s.CodigoCliente = " + codigoCliente.ToString() + ")) order by u.Fecha desc")
              .SetFirstResult(0)
              .SetMaxResults(50)
              .List<Ubicacion>();


            }
            else
            {

                return Session.CreateQuery("from Ubicacion u where u.GpsValido='Invalido' and u.GpsConectado='Desconectado'  and u.CodigoUnidad in (select g.Unidad from UsuarioUnidad g where g.Usuario in (select s.Id from Usuario s where s.CodigoCliente = " + codigoCliente.ToString() + ")) order by u.Fecha desc")
              .SetFirstResult(0)
              .SetMaxResults(50)
              .List<Ubicacion>();


            }
        }

        public IList<Ubicacion> GetUbicacionesPorUsuarioGps(int codigoUsuario, int codigoGps)
        {
          
            if (codigoGps == 1)
            {
                return Session.CreateQuery("from Ubicacion u where  u.GpsValido='Valido' and u.CodigoUnidad in(select g.Unidad from UsuarioUnidad g where g.Usuario =" + codigoUsuario.ToString() + "  ) order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();
            }
            else if (codigoGps == 2)
            {

                return Session.CreateQuery("from Ubicacion u where u.GpsValido='Invalido'  and u.CodigoUnidad in(select g.Unidad from UsuarioUnidad g where g.Usuario =" + codigoUsuario.ToString() + "  ) order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();

            }

            else if (codigoGps == 3)
            {

                return Session.CreateQuery("from Ubicacion u where u.GpsConectado='Conectado' and u.CodigoUnidad in(select g.Unidad from UsuarioUnidad g where g.Usuario =" + codigoUsuario.ToString() + "  ) order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();

            }
            else if (codigoGps == 4)
            {

                return Session.CreateQuery("from Ubicacion u where u.GpsConectado='Desconectado' and and u.CodigoUnidad in(select g.Unidad from UsuarioUnidad g where g.Usuario =" + codigoUsuario.ToString() + "  ) order by u.Fecha desc")
              .SetFirstResult(0)
              .SetMaxResults(50)
              .List<Ubicacion>();


            }
            else if (codigoGps == 5)
            {

                return Session.CreateQuery("from Ubicacion u where u.GpsValido='Valido' and u.GpsConectado='Conectado'  and u.CodigoUnidad in(select g.Unidad from UsuarioUnidad g where g.Usuario =" + codigoUsuario.ToString() + "  ) order by u.Fecha desc")
              .SetFirstResult(0)
              .SetMaxResults(50)
              .List<Ubicacion>();


            }
            else if (codigoGps == 6)
            {

                return Session.CreateQuery("from Ubicacion u where u.GpsValido='Valido' and u.GpsConectado='Desconectado'  and u.CodigoUnidad in(select g.Unidad from UsuarioUnidad g where g.Usuario =" + codigoUsuario.ToString() + "  ) order by u.Fecha desc")
              .SetFirstResult(0)
              .SetMaxResults(50)
              .List<Ubicacion>();


            }

            else if (codigoGps == 7)
            {

                return Session.CreateQuery("from Ubicacion u where u.GpsValido='Invalido' and u.GpsConectado='Conectado'  and u.CodigoUnidad in(select g.Unidad from UsuarioUnidad g where g.Usuario =" + codigoUsuario.ToString() + "  ) order by u.Fecha desc")
              .SetFirstResult(0)
              .SetMaxResults(50)
              .List<Ubicacion>();


            }
            else
            {

                return Session.CreateQuery("from Ubicacion u where u.GpsValido='Invalido' and u.GpsConectado='Desconectado'  and u.CodigoUnidad in(select g.Unidad from UsuarioUnidad g where g.Usuario =" + codigoUsuario.ToString() + "  ) order by u.Fecha desc")
              .SetFirstResult(0)
              .SetMaxResults(50)
              .List<Ubicacion>();


            }
        }


        /////////////////////////////////////////////////////////conceptos por cliente//////////////////////////////

        public IList<Ubicacion> GetUbicacionesPorClienteBateriaPrinciapl(int codigoCliente, int codigobatPri)
        {
            if (codigobatPri == 1)
            {
                return Session.CreateQuery("from Ubicacion u where u.BateriaPrincipal >= 12  and u.CodigoUnidad in (select g.Unidad from UsuarioUnidad g where g.Usuario in (select s.Id from Usuario s where s.CodigoCliente = " + codigoCliente.ToString() + ")) order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();
            }
            else if (codigobatPri == 2)
            {

                return Session.CreateQuery("from Ubicacion u where u.BateriaPrincipal <= 10 and u.BateriaPrincipal >= 1 and u.CodigoUnidad in (select g.Unidad from UsuarioUnidad g where g.Usuario in (select s.Id from Usuario s where s.CodigoCliente = " + codigoCliente.ToString() + ")) order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();

            }

            else
            {

                return Session.CreateQuery("from Ubicacion u where u.BateriaPrincipal < 1  and u.CodigoUnidad in (select g.Unidad from UsuarioUnidad g where g.Usuario in (select s.Id from Usuario s where s.CodigoCliente = " + codigoCliente.ToString() + ")) order by u.Fecha desc")
              .SetFirstResult(0)
              .SetMaxResults(50)
              .List<Ubicacion>();


            }


        }

        public IList<Ubicacion> GetUbicacionesPorClienteBateriaAlterna(int codigoCliente, int codigobatAlt)
        {
            if (codigobatAlt == 1)
            {
                return Session.CreateQuery("from Ubicacion u where u.BateriaAlterna < 5  and u.CodigoUnidad in (select g.Unidad from UsuarioUnidad g where g.Usuario in (select s.Id from Usuario s where s.CodigoCliente = " + codigoCliente.ToString() + ")) order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();
            }
            else if (codigobatAlt == 2)
            {

                return Session.CreateQuery("from Ubicacion u where u.BateriaAlterna < 10 and u.BateriaAlterna >= 5  and u.CodigoUnidad in (select g.Unidad from UsuarioUnidad g where g.Usuario in (select s.Id from Usuario s where s.CodigoCliente = " + codigoCliente.ToString() + ")) order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();

            }


            else if (codigobatAlt == 3)
            {

                return Session.CreateQuery("from Ubicacion u where u.BateriaAlterna < 25 and u.BateriaAlterna >= 10  and u.CodigoUnidad in (select g.Unidad from UsuarioUnidad g where g.Usuario in (select s.Id from Usuario s where s.CodigoCliente = " + codigoCliente.ToString() + ")) order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();

            }

            else if (codigobatAlt == 4)
            {

                return Session.CreateQuery("from Ubicacion u where u.BateriaAlterna < 50 and u.BateriaAlterna >= 25   and u.CodigoUnidad in (select g.Unidad from UsuarioUnidad g where g.Usuario in (select s.Id from Usuario s where s.CodigoCliente = " + codigoCliente.ToString() + ")) order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();

            }

            else if (codigobatAlt == 5)
            {

                return Session.CreateQuery("from Ubicacion u where u.BateriaAlterna < 75 and u.BateriaAlterna >= 50  and u.CodigoUnidad in (select g.Unidad from UsuarioUnidad g where g.Usuario in (select s.Id from Usuario s where s.CodigoCliente = " + codigoCliente.ToString() + ")) order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();

            }

            else if (codigobatAlt == 6)
            {

                return Session.CreateQuery("from Ubicacion u where u.BateriaAlterna < 95 and u.BateriaAlterna >= 75  and u.CodigoUnidad in (select g.Unidad from UsuarioUnidad g where g.Usuario in (select s.Id from Usuario s where s.CodigoCliente = " + codigoCliente.ToString() + ")) order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();

            }
            else
            {

                return Session.CreateQuery("from Ubicacion u where u.BateriaAlterna >= 95  and u.CodigoUnidad in (select g.Unidad from UsuarioUnidad g where g.Usuario in (select s.Id from Usuario s where s.CodigoCliente = " + codigoCliente.ToString() + ")) order by u.Fecha desc")
              .SetFirstResult(0)
              .SetMaxResults(50)
              .List<Ubicacion>();


            }


        }


        public IList<Ubicacion> GetUbicacionesPorClienteEstadoLogico(int codigoCliente, int codigoEstadoLogico)
        {
            if (codigoEstadoLogico == 1)
            {
                return Session.CreateQuery("from Ubicacion u where u.EstadoLogico='Idle'  and u.CodigoUnidad in (select g.Unidad from UsuarioUnidad g where g.Usuario in (select s.Id from Usuario s where s.CodigoCliente = " + codigoCliente.ToString() + ")) order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();
            }
            else if (codigoEstadoLogico == 2)
            {

                return Session.CreateQuery("from Ubicacion u where u.EstadoLogico='Armed'  and u.CodigoUnidad in (select g.Unidad from UsuarioUnidad g where g.Usuario in (select s.Id from Usuario s where s.CodigoCliente = " + codigoCliente.ToString() + ")) order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();

            }


            else if (codigoEstadoLogico == 3)
            {

                return Session.CreateQuery("from Ubicacion u where u.EstadoLogico='Silent Delay' and u.CodigoUnidad in (select g.Unidad from UsuarioUnidad g where g.Usuario in (select s.Id from Usuario s where s.CodigoCliente = " + codigoCliente.ToString() + ")) order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();

            }

            else if (codigoEstadoLogico == 4)
            {

                return Session.CreateQuery("from Ubicacion u where u.EstadoLogico='Alarm Triggered' and u.CodigoUnidad in (select g.Unidad from UsuarioUnidad g where g.Usuario in (select s.Id from Usuario s where s.CodigoCliente = " + codigoCliente.ToString() + ")) order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();

            }


            else
            {

                return Session.CreateQuery("from Ubicacion u where u.EstadoLogico='Garage Mode' and u.CodigoUnidad in (select g.Unidad from UsuarioUnidad g where g.Usuario in (select s.Id from Usuario s where s.CodigoCliente = " + codigoCliente.ToString() + ")) order by u.Fecha desc")
              .SetFirstResult(0)
              .SetMaxResults(50)
              .List<Ubicacion>();


            }


        }

        ////////////////////////////usuario conceptos/////////////////


        public IList<Ubicacion> GetUbicacionesPorUsuarioBateriaPrinciapl(int codigoUsuario, int codigobatPri)
        {
            if (codigobatPri == 1)
            {
                return Session.CreateQuery("from Ubicacion u where u.BateriaPrincipal >= 12  and u.CodigoUnidad in(select g.Unidad from UsuarioUnidad g where g.Usuario =" + codigoUsuario.ToString() + "  ) order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();
            }
            else if (codigobatPri == 2)
            {

                return Session.CreateQuery("from Ubicacion u where u.BateriaPrincipal <= 10 and u.BateriaPrincipal >= 1 and u.CodigoUnidad in(select g.Unidad from UsuarioUnidad g where g.Usuario =" + codigoUsuario.ToString() + "  ) order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();

            }

            else
            {

                return Session.CreateQuery("from Ubicacion u where u.BateriaPrincipal < 1  and u.CodigoUnidad in(select g.Unidad from UsuarioUnidad g where g.Usuario =" + codigoUsuario.ToString() + "  ) order by u.Fecha desc")
              .SetFirstResult(0)
              .SetMaxResults(50)
              .List<Ubicacion>();


            }


        }

        public IList<Ubicacion> GetUbicacionesPorUsuarioBateriaAlterna(int codigoUsuario, int codigobatAlt)
        {
            if (codigobatAlt == 1)
            {
                return Session.CreateQuery("from Ubicacion u where u.BateriaAlterna < 5  and u.CodigoUnidad in(select g.Unidad from UsuarioUnidad g where g.Usuario =" + codigoUsuario.ToString() + "  ) order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();
            }
            else if (codigobatAlt == 2)
            {

                return Session.CreateQuery("from Ubicacion u where u.BateriaAlterna < 10 and u.BateriaAlterna >= 5  and u.CodigoUnidad in(select g.Unidad from UsuarioUnidad g where g.Usuario =" + codigoUsuario.ToString() + "  ) order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();

            }


            else if (codigobatAlt == 3)
            {

                return Session.CreateQuery("from Ubicacion u where u.BateriaAlterna < 25 and u.BateriaAlterna >= 10  and u.CodigoUnidad in(select g.Unidad from UsuarioUnidad g where g.Usuario =" + codigoUsuario.ToString() + "  ) order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();

            }

            else if (codigobatAlt == 4)
            {

                return Session.CreateQuery("from Ubicacion u where u.BateriaAlterna < 50 and u.BateriaAlterna >= 25  and u.CodigoUnidad in(select g.Unidad from UsuarioUnidad g where g.Usuario =" + codigoUsuario.ToString() + "  ) order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();

            }

            else if (codigobatAlt == 5)
            {

                return Session.CreateQuery("from Ubicacion u where u.BateriaAlterna < 75 and u.BateriaAlterna >= 50  and u.CodigoUnidad in(select g.Unidad from UsuarioUnidad g where g.Usuario =" + codigoUsuario.ToString() + "  ) order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();

            }

            else if (codigobatAlt == 6)
            {

                return Session.CreateQuery("from Ubicacion u where u.BateriaAlterna < 95 and u.BateriaAlterna >= 75  and u.CodigoUnidad in(select g.Unidad from UsuarioUnidad g where g.Usuario =" + codigoUsuario.ToString() + "  ) order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();

            }
            else
            {

                return Session.CreateQuery("from Ubicacion u where u.BateriaAlterna >= 95  and u.CodigoUnidad in(select g.Unidad from UsuarioUnidad g where g.Usuario =" + codigoUsuario.ToString() + "  ) order by u.Fecha desc")
              .SetFirstResult(0)
              .SetMaxResults(50)
              .List<Ubicacion>();


            }


        }


        public IList<Ubicacion> GetUbicacionesPorUsuarioEstadoLogico(int codigoUsuario, int codigoEstadoLogico)
        {
            if (codigoEstadoLogico == 1)
            {
                return Session.CreateQuery("from Ubicacion u where u.EstadoLogico='Idle'  and u.CodigoUnidad in(select g.Unidad from UsuarioUnidad g where g.Usuario =" + codigoUsuario.ToString() + "  ) order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();
            }
            else if (codigoEstadoLogico == 2)
            {

                return Session.CreateQuery("from Ubicacion u where u.EstadoLogico='Armed'  and u.CodigoUnidad in(select g.Unidad from UsuarioUnidad g where g.Usuario =" + codigoUsuario.ToString() + "  ) order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();

            }


            else if (codigoEstadoLogico == 3)
            {

                return Session.CreateQuery("from Ubicacion u where u.EstadoLogico='Silent Delay' and u.CodigoUnidad in(select g.Unidad from UsuarioUnidad g where g.Usuario =" + codigoUsuario.ToString() + "  ) order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();

            }

            else if (codigoEstadoLogico == 4)
            {

                return Session.CreateQuery("from Ubicacion u where u.EstadoLogico='Alarm Triggered' and u.CodigoUnidad in(select g.Unidad from UsuarioUnidad g where g.Usuario =" + codigoUsuario.ToString() + "  ) order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();

            }


            else
            {

                return Session.CreateQuery("from Ubicacion u where u.EstadoLogico='Garage Mode' and u.CodigoUnidad in(select g.Unidad from UsuarioUnidad g where g.Usuario =" + codigoUsuario.ToString() + "  ) order by u.Fecha desc")
              .SetFirstResult(0)
              .SetMaxResults(50)
              .List<Ubicacion>();


            }


        }


        ///////////////////concepto grupos cliente estadisticos///////////////////////////////////


        public IList<Ubicacion> GetUbicacionesPorGrupoClienteGps(int codigoCliente, int codigoGps)
        {
           
            if (codigoGps == 1)
            {
                return Session.CreateQuery("from Ubicacion u where  u.GpsValido='Valido' and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo in(select r.Id from Grupo r where r.CodigoCliente =" + codigoCliente.ToString() + "  )) order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();
            }
            else if (codigoGps == 2)
            {

                return Session.CreateQuery("from Ubicacion u where u.GpsValido='Invalido'  and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo in(select r.Id from Grupo r where r.CodigoCliente =" + codigoCliente.ToString() + "  )) order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();

            }

            else if (codigoGps == 3)
            {

                return Session.CreateQuery("from Ubicacion u where u.GpsConectado='Conectado' and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo in(select r.Id from Grupo r where r.CodigoCliente =" + codigoCliente.ToString() + "  )) order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();

            }
            else if (codigoGps == 4)
            {

                return Session.CreateQuery("from Ubicacion u where u.GpsConectado='Desconectado' and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo in(select r.Id from Grupo r where r.CodigoCliente =" + codigoCliente.ToString() + "  )) order by u.Fecha desc")
              .SetFirstResult(0)
              .SetMaxResults(50)
              .List<Ubicacion>();


            }
            else if (codigoGps == 5)
            {

                return Session.CreateQuery("from Ubicacion u where u.GpsValido='Valido' and u.GpsConectado='Conectado'  and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo in(select r.Id from Grupo r where r.CodigoCliente =" + codigoCliente.ToString() + "  )) order by u.Fecha desc")
              .SetFirstResult(0)
              .SetMaxResults(50)
              .List<Ubicacion>();


            }
            else if (codigoGps == 6)
            {

                return Session.CreateQuery("from Ubicacion u where u.GpsValido='Valido' and u.GpsConectado='Desconectado'  and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo in(select r.Id from Grupo r where r.CodigoCliente =" + codigoCliente.ToString() + "  )) order by u.Fecha desc")
              .SetFirstResult(0)
              .SetMaxResults(50)
              .List<Ubicacion>();


            }

            else if (codigoGps == 7)
            {

                return Session.CreateQuery("from Ubicacion u where u.GpsValido='Invalido' and u.GpsConectado='Conectado'  and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo in(select r.Id from Grupo r where r.CodigoCliente =" + codigoCliente.ToString() + "  )) order by u.Fecha desc")
              .SetFirstResult(0)
              .SetMaxResults(50)
              .List<Ubicacion>();


            }
            else
            {

                return Session.CreateQuery("from Ubicacion u where u.GpsValido='Invalido' and u.GpsConectado='Desconectado'  and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo in(select r.Id from Grupo r where r.CodigoCliente =" + codigoCliente.ToString() + "  )) order by u.Fecha desc")
              .SetFirstResult(0)
              .SetMaxResults(50)
              .List<Ubicacion>();


            }
        }


        public IList<Ubicacion> GetUbicacionesPorGrupoClienteBateriaPrinciapl(int codigoCliente, int codigobatPri)
        {
            if (codigobatPri == 1)
            {
                return Session.CreateQuery("from Ubicacion u where u.BateriaPrincipal >= 12  and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo in(select r.Id from Grupo r where r.CodigoCliente =" + codigoCliente.ToString() + "  )) order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();
            }
            else if (codigobatPri == 2)
            {

                return Session.CreateQuery("from Ubicacion u where u.BateriaPrincipal <= 10 and u.BateriaPrincipal >= 1 and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo in(select r.Id from Grupo r where r.CodigoCliente =" + codigoCliente.ToString() + "  )) order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();

            }

            else
            {

                return Session.CreateQuery("from Ubicacion u where u.BateriaPrincipal < 1  and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo in(select r.Id from Grupo r where r.CodigoCliente =" + codigoCliente.ToString() + "  )) order by u.Fecha desc")
              .SetFirstResult(0)
              .SetMaxResults(50)
              .List<Ubicacion>();


            }


        }

        public IList<Ubicacion> GetUbicacionesPorGrupoClienteBateriaAlterna(int codigoCliente, int codigobatAlt)
        {
            if (codigobatAlt == 1)
            {
                return Session.CreateQuery("from Ubicacion u where u.BateriaAlterna < 5  and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo in(select r.Id from Grupo r where r.CodigoCliente =" + codigoCliente.ToString() + "  )) order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();
            }
            else if (codigobatAlt == 2)
            {

                return Session.CreateQuery("from Ubicacion u where u.BateriaAlterna < 10 and u.BateriaAlterna >= 5  and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo in(select r.Id from Grupo r where r.CodigoCliente =" + codigoCliente.ToString() + "  )) order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();

            }


            else if (codigobatAlt == 3)
            {

                return Session.CreateQuery("from Ubicacion u where u.BateriaAlterna < 25 and u.BateriaAlterna >= 10  and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo in(select r.Id from Grupo r where r.CodigoCliente =" + codigoCliente.ToString() + "  )) order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();

            }

            else if (codigobatAlt == 4)
            {

                return Session.CreateQuery("from Ubicacion u where u.BateriaAlterna < 50 and u.BateriaAlterna >= 25  and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo in(select r.Id from Grupo r where r.CodigoCliente =" + codigoCliente.ToString() + "  )) order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();

            }

            else if (codigobatAlt == 5)
            {

                return Session.CreateQuery("from Ubicacion u where u.BateriaAlterna < 75 and u.BateriaAlterna >= 50  and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo in(select r.Id from Grupo r where r.CodigoCliente =" + codigoCliente.ToString() + "  )) order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();

            }

            else if (codigobatAlt == 6)
            {

                return Session.CreateQuery("from Ubicacion u where u.BateriaAlterna < 95 and u.BateriaAlterna >= 75  and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo in(select r.Id from Grupo r where r.CodigoCliente =" + codigoCliente.ToString() + "  )) order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();

            }
            else
            {

                return Session.CreateQuery("from Ubicacion u where u.BateriaAlterna >= 95  and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo in(select r.Id from Grupo r where r.CodigoCliente =" + codigoCliente.ToString() + "  )) order by u.Fecha desc")
              .SetFirstResult(0)
              .SetMaxResults(50)
              .List<Ubicacion>();


            }


        }


        public IList<Ubicacion> GetUbicacionesPorGruporClienteEstadoLogico(int codigoCliente, int codigoEstadoLogico)
        {
            if (codigoEstadoLogico == 1)
            {
                return Session.CreateQuery("from Ubicacion u where u.EstadoLogico='Idle'  and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo in(select r.Id from Grupo r where r.CodigoCliente =" + codigoCliente.ToString() + "  )) order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();
            }
            else if (codigoEstadoLogico == 2)
            {

                return Session.CreateQuery("from Ubicacion u where u.EstadoLogico='Armed'  and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo in(select r.Id from Grupo r where r.CodigoCliente =" + codigoCliente.ToString() + "  )) order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();

            }


            else if (codigoEstadoLogico == 3)
            {

                return Session.CreateQuery("from Ubicacion u where u.EstadoLogico='Silent Delay' and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo in(select r.Id from Grupo r where r.CodigoCliente =" + codigoCliente.ToString() + "  )) order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();

            }

            else if (codigoEstadoLogico == 4)
            {

                return Session.CreateQuery("from Ubicacion u where u.EstadoLogico='Alarm Triggered' and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo in(select r.Id from Grupo r where r.CodigoCliente =" + codigoCliente.ToString() + "  )) order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();

            }


            else
            {

                return Session.CreateQuery("from Ubicacion u where u.EstadoLogico='Garage Mode' and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo in(select r.Id from Grupo r where r.CodigoCliente =" + codigoCliente.ToString() + "  )) order by u.Fecha desc")
              .SetFirstResult(0)
              .SetMaxResults(50)
              .List<Ubicacion>();


            }


        }

        /// <summary>
        /// //conceptos grupo usuarios
        /// </summary>
        /// <param name="codigoCliente"></param>
        /// <param name="codigoEvento"></param>
        /// <returns></returns>

        public IList<Ubicacion> GetUbicacionesPorGrupoUsuarioGps(int codigoUsuario, int codigoGps)
        {
            
            if (codigoGps == 1)
            {
                return Session.CreateQuery("from Ubicacion u where  u.GpsValido='Valido' and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo in (select w.Grupo from GrupoUsuario w where w.Usuario = " + codigoUsuario.ToString() + "  )) order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();
            }
            else if (codigoGps == 2)
            {

                return Session.CreateQuery("from Ubicacion u where u.GpsValido='Invalido'  and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo in (select w.Grupo from GrupoUsuario w where w.Usuario = " + codigoUsuario.ToString() + "  )) order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();

            }

            else if (codigoGps == 3)
            {

                return Session.CreateQuery("from Ubicacion u where u.GpsConectado='Conectado' and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo in (select w.Grupo from GrupoUsuario w where w.Usuario = " + codigoUsuario.ToString() + "  )) order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();

            }
            else if (codigoGps == 4)
            {

                return Session.CreateQuery("from Ubicacion u where u.GpsConectado='Desconectado' and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo in (select w.Grupo from GrupoUsuario w where w.Usuario = " + codigoUsuario.ToString() + "  )) order by u.Fecha desc")
              .SetFirstResult(0)
              .SetMaxResults(50)
              .List<Ubicacion>();


            }
            else if (codigoGps == 5)
            {

                return Session.CreateQuery("from Ubicacion u where u.GpsValido='Valido' and u.GpsConectado='Conectado'  and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo in (select w.Grupo from GrupoUsuario w where w.Usuario = " + codigoUsuario.ToString() + "  )) order by u.Fecha desc")
              .SetFirstResult(0)
              .SetMaxResults(50)
              .List<Ubicacion>();


            }
            else if (codigoGps == 6)
            {

                return Session.CreateQuery("from Ubicacion u where u.GpsValido='Valido' and u.GpsConectado='Desconectado'  and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo in (select w.Grupo from GrupoUsuario w where w.Usuario = " + codigoUsuario.ToString() + "  )) order by u.Fecha desc")
              .SetFirstResult(0)
              .SetMaxResults(50)
              .List<Ubicacion>();


            }

            else if (codigoGps == 7)
            {

                return Session.CreateQuery("from Ubicacion u where u.GpsValido='Invalido' and u.GpsConectado='Conectado'  and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo in (select w.Grupo from GrupoUsuario w where w.Usuario = " + codigoUsuario.ToString() + "  )) order by u.Fecha desc")
              .SetFirstResult(0)
              .SetMaxResults(50)
              .List<Ubicacion>();


            }
            else
            {

                return Session.CreateQuery("from Ubicacion u where u.GpsValido='Invalido' and u.GpsConectado='Desconectado'  and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo in (select w.Grupo from GrupoUsuario w where w.Usuario = " + codigoUsuario.ToString() + "  )) order by u.Fecha desc")
              .SetFirstResult(0)
              .SetMaxResults(50)
              .List<Ubicacion>();


            }
        }


        public IList<Ubicacion> GetUbicacionesPorGrupoUsuarioBateriaPrinciapl(int codigoUsuario, int codigobatPri)
        {
            if (codigobatPri == 1)
            {
                return Session.CreateQuery("from Ubicacion u where u.BateriaPrincipal >= 12  and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo in (select w.Grupo from GrupoUsuario w where w.Usuario = " + codigoUsuario.ToString() + "  )) order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();
            }
            else if (codigobatPri == 2)
            {

                return Session.CreateQuery("from Ubicacion u where u.BateriaPrincipal <= 10 and u.BateriaPrincipal >= 1 and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo in (select w.Grupo from GrupoUsuario w where w.Usuario = " + codigoUsuario.ToString() + "  )) order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();

            }

            else
            {

                return Session.CreateQuery("from Ubicacion u where u.BateriaPrincipal < 1  and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo in (select w.Grupo from GrupoUsuario w where w.Usuario = " + codigoUsuario.ToString() + "  )) order by u.Fecha desc")
              .SetFirstResult(0)
              .SetMaxResults(50)
              .List<Ubicacion>();


            }


        }

        public IList<Ubicacion> GetUbicacionesPorGrupoUsuarioBateriaAlterna(int codigoUsuario, int codigobatAlt)
        {
            if (codigobatAlt == 1)
            {
                return Session.CreateQuery("from Ubicacion u where u.BateriaAlterna < 5  and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo in (select w.Grupo from GrupoUsuario w where w.Usuario = " + codigoUsuario.ToString() + "  )) order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();
            }
            else if (codigobatAlt == 2)
            {

                return Session.CreateQuery("from Ubicacion u where u.BateriaAlterna < 10 and u.BateriaAlterna >= 5  and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo in (select w.Grupo from GrupoUsuario w where w.Usuario = " + codigoUsuario.ToString() + "  )) order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();

            }


            else if (codigobatAlt == 3)
            {

                return Session.CreateQuery("from Ubicacion u where u.BateriaAlterna < 25 and u.BateriaAlterna >= 10  and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo in (select w.Grupo from GrupoUsuario w where w.Usuario = " + codigoUsuario.ToString() + "  )) order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();

            }

            else if (codigobatAlt == 4)
            {

                return Session.CreateQuery("from Ubicacion u where u.BateriaAlterna < 50 and u.BateriaAlterna >= 25  and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo in (select w.Grupo from GrupoUsuario w where w.Usuario = " + codigoUsuario.ToString() + "  )) order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();

            }

            else if (codigobatAlt == 5)
            {

                return Session.CreateQuery("from Ubicacion u where u.BateriaAlterna < 75 and u.BateriaAlterna >= 50  and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo in (select w.Grupo from GrupoUsuario w where w.Usuario = " + codigoUsuario.ToString() + "  )) order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();

            }

            else if (codigobatAlt == 6)
            {

                return Session.CreateQuery("from Ubicacion u where u.BateriaAlterna < 95 and u.BateriaAlterna >= 75  and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo in (select w.Grupo from GrupoUsuario w where w.Usuario = " + codigoUsuario.ToString() + "  )) order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();

            }
            else
            {

                return Session.CreateQuery("from Ubicacion u where u.BateriaAlterna >= 95  and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo in (select w.Grupo from GrupoUsuario w where w.Usuario = " + codigoUsuario.ToString() + "  )) order by u.Fecha desc")
              .SetFirstResult(0)
              .SetMaxResults(50)
              .List<Ubicacion>();


            }


        }


        public IList<Ubicacion> GetUbicacionesPorGruporUsuarioEstadoLogico(int codigoUsuario, int codigoEstadoLogico)
        {
            if (codigoEstadoLogico == 1)
            {
                return Session.CreateQuery("from Ubicacion u where u.EstadoLogico='Idle'  and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo in (select w.Grupo from GrupoUsuario w where w.Usuario = " + codigoUsuario.ToString() + "  )) order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();
            }
            else if (codigoEstadoLogico == 2)
            {

                return Session.CreateQuery("from Ubicacion u where u.EstadoLogico='Armed'  and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo in (select w.Grupo from GrupoUsuario w where w.Usuario = " + codigoUsuario.ToString() + "  )) order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();

            }


            else if (codigoEstadoLogico == 3)
            {

                return Session.CreateQuery("from Ubicacion u where u.EstadoLogico='Silent Delay' and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo in (select w.Grupo from GrupoUsuario w where w.Usuario = " + codigoUsuario.ToString() + "  )) order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();

            }

            else if (codigoEstadoLogico == 4)
            {

                return Session.CreateQuery("from Ubicacion u where u.EstadoLogico='Alarm Triggered' and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo in (select w.Grupo from GrupoUsuario w where w.Usuario = " + codigoUsuario.ToString() + "  )) order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();

            }


            else
            {

                return Session.CreateQuery("from Ubicacion u where u.EstadoLogico='Garage Mode' and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo in (select w.Grupo from GrupoUsuario w where w.Usuario = " + codigoUsuario.ToString() + "  )) order by u.Fecha desc")
              .SetFirstResult(0)
              .SetMaxResults(50)
              .List<Ubicacion>();


            }


        }


        public IList<Ubicacion> GetUbicacionesPorGrupoUsuarioAccionesEjecutada(int codigoUsuario, int codigoAccion)
        {
            if (codigoAccion == 1)
            {
                return Session.CreateQuery("from Ubicacion u where u.Estado != '0'  and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo in (select w.Grupo from GrupoUsuario w where w.Usuario = " + codigoUsuario.ToString() + "  )) order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();
            }
           
            else
            {

                return Session.CreateQuery("from Ubicacion u where u.Estado = '0'  and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo in (select w.Grupo from GrupoUsuario w where w.Usuario = " + codigoUsuario.ToString() + "  )) order by u.Fecha desc")
              .SetFirstResult(0)
              .SetMaxResults(50)
              .List<Ubicacion>();


            }


        }


        public IList<Ubicacion> GetUbicacionesPorGrupoClienteStatusEvento(int codigoCliente, int codigoStatus)
        {
            if (codigoStatus == 1)
            {
                return Session.CreateQuery("from Ubicacion u where u.Estado != '0'  and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo in(select r.Id from Grupo r where r.CodigoCliente =" + codigoCliente.ToString() + "  )) order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();
            }
            
            else
            {

                return Session.CreateQuery("from Ubicacion u where u.Estado = '0'  and u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo in(select r.Id from Grupo r where r.CodigoCliente =" + codigoCliente.ToString() + "  )) order by u.Fecha desc")
              .SetFirstResult(0)
              .SetMaxResults(50)
              .List<Ubicacion>();


            }


        }


        public IList<Ubicacion> GetUbicacionesPorVelocidades(int codigoUnidad, int codigoVelocidad)
        {
            if (codigoVelocidad == 1)
            {
                return Session.CreateQuery("from Ubicacion u where u.CodigoUnidad =" + codigoUnidad.ToString() + " and u.Velocidad < 10  order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();
            }
            if (codigoVelocidad == 2)
            {
                return Session.CreateQuery("from Ubicacion u where u.CodigoUnidad =" + codigoUnidad.ToString() + " and u.Velocidad >= 10 and u.Velocidad < 40  order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();
            } 
            if (codigoVelocidad == 3)
            {
                return Session.CreateQuery("from Ubicacion u where u.CodigoUnidad =" + codigoUnidad.ToString() + " and u.Velocidad >= 40 and u.Velocidad < 60  order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();
            } 
            if (codigoVelocidad == 4)
            {
                return Session.CreateQuery("from Ubicacion u where u.CodigoUnidad =" + codigoUnidad.ToString() + " and u.Velocidad >= 60 and u.Velocidad < 90 order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();
            } 
            if (codigoVelocidad == 5)
            {
                return Session.CreateQuery("from Ubicacion u where u.CodigoUnidad =" + codigoUnidad.ToString() + " and u.Velocidad >= 90 and u.Velocidad < 120 order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();
            }

            else
            {

                return Session.CreateQuery("from Ubicacion u where u.CodigoUnidad =" + codigoUnidad.ToString() + " and u.Velocidad >= 120  order by u.Fecha desc")
              .SetFirstResult(0)
              .SetMaxResults(50)
              .List<Ubicacion>();


            }


        }


        public IList<Ubicacion> GetUbicacionesPorGrupoVelocidades(int codigoGrupo, int codigoVelocidad)
        {
            if (codigoVelocidad == 1)
            {
                return Session.CreateQuery("from Ubicacion u where u.Velocidad < 10 and u.CodigoUnidad in (Select g.Unidad from GrupoUnidad g where g.Grupo =" + codigoGrupo.ToString() + ")   order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();
            }
            if (codigoVelocidad == 2)
            {
                return Session.CreateQuery("from Ubicacion u where u.Velocidad >= 10 and u.Velocidad < 40 and u.CodigoUnidad in (Select g.Unidad from GrupoUnidad g where g.Grupo =" + codigoGrupo.ToString() + ")   order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();
            }
            if (codigoVelocidad == 3)
            {
                return Session.CreateQuery("from Ubicacion u where u.Velocidad >= 40 and u.Velocidad < 60 and u.CodigoUnidad in (Select g.Unidad from GrupoUnidad g where g.Grupo =" + codigoGrupo.ToString() + ")   order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();
            }
            if (codigoVelocidad == 4)
            {
                return Session.CreateQuery("from Ubicacion u where u.Velocidad >= 60 and u.Velocidad < 90 and u.CodigoUnidad in (Select g.Unidad from GrupoUnidad g where g.Grupo =" + codigoGrupo.ToString() + ")   order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();
            }
            if (codigoVelocidad == 5)
            {
                return Session.CreateQuery("from Ubicacion u where u.Velocidad >= 90 and u.Velocidad < 120 and u.CodigoUnidad in (Select g.Unidad from GrupoUnidad g where g.Grupo =" + codigoGrupo.ToString() + ")   order by u.Fecha desc")
                   .SetFirstResult(0)
                   .SetMaxResults(50)
                   .List<Ubicacion>();
            }

            else
            {

                return Session.CreateQuery("from Ubicacion u where u.Velocidad >= 120 and u.CodigoUnidad in (Select g.Unidad from GrupoUnidad g where g.Grupo =" + codigoGrupo.ToString() + ")   order by u.Fecha desc")
              .SetFirstResult(0)
              .SetMaxResults(50)
              .List<Ubicacion>();


            }


        }

        public IList<Ubicacion> GetUbicacionesPorGrupoMapa(int codigoGrupo)
        {
            return Session.CreateQuery("from Ubicacion u where u.CodigoUnidad in(select g.Unidad from GrupoUnidad g where g.Grupo = " + codigoGrupo.ToString() + ") order by u.Fecha desc")
               .SetFirstResult(0)
               .SetMaxResults(10)
               .List<Ubicacion>();
               
        }

        public IList<Ubicacion> getUbicacionesPorUsuarioId(int codigoUsuario)
        {
            return Session.CreateQuery("from Ubicacion u where u.CodigoUnidad in(select g.Unidad from UsuarioUnidad g where g.Usuario = " + codigoUsuario.ToString() + ") order by u.Fecha desc")
               .SetFirstResult(0)
               .SetMaxResults(10)
               .List<Ubicacion>().Distinct().ToList();
             
        }

        public IList<Ubicacion> getUbicacionesPorGrupoClienteUsuario(int codigoUsuario)
        {
            return Session.CreateQuery("from Ubicacion u where u.CodigoUnidad in (select g.Unidad from GrupoUnidad g where g.Grupo in (select r.Id from Grupo r where r.Cliente in (select w.Cliente from Usuario w where w.Id = " + codigoUsuario.ToString() + "))) order by u.Fecha desc")
               .SetFirstResult(0)
               .SetMaxResults(10)
               .List<Ubicacion>().Distinct().ToList();

        }
    }
}
